home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 9
/
FM Towns Free Software Collection 9.iso
/
t_os
/
tool
/
ugoku
/
src
/
vdsys
/
vdxsub.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-11-16
|
95KB
|
3,515 lines
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include <file_dlg.h>
#include <egb.h>
#include <mos.h>
#include <snd.h>
#include "ugoku.h"
#include "vdsysx.h"
#define V00TYPE 0 /* V00関係の処理 */
#define MVBTYPE 1 /* MVB関係の処理 */
#define V02TYPE 2 /* V00関係の処理 */
#define DIRTYPE 3 /* 瞬間圧縮 */
#define AFRECTYPE 4 /* アフレコ */
extern char *guiEgbPtr ; /* EGB のワークアドレス */
/* dsk */
int baseDialogId = -1 ;
int menubarId = -1 ;
int menuId = -1 ;
int mItemId[3] = -1 ;
int SDKmenuId = -1 ;
int SDKmItemId[3] = -1 ;
int fileMenuId = -1 ;
int fileMItemId[15] = -1 ;
int editMenuId = -1 ;
int editMItemId[5] = -1 ;
int quitIconId = -1 ;
int wakuDialogId = -1 ;
int tableSetDialogId = -1 ;
int tableSetMesId[3] = -1 ;
/* alou */
int alertId = -1 ;
int messageId[3] = -1 ;
int dspIconId = -1 ;
int aboutOKBtnId = -1 ;
/* err */
int errorId = -1 ;
int errorOKBtnId = -1 ;
int errorIconId = -1 ;
int errormessage[2] = -1 ;
/* rec */
int recDialogId = -1 ;
int recSubDialogId = -1 ;
int recFrameNumId = -1 ;
int recMemoryNumId = -1 ;
int recBtnId[15] = -1 ;
int recVolumeId = -1 ;
int recMesId[30] = -1 ;
int recOkBtnId = -1 ;
int recCanBtnId = -1 ;
int recSndDialogId = -1 ;
int recSndSubDialogId = -1 ;
int recSndVolumeId = -1 ;
int recSndOkBtnId = -1 ;
int recSndCanBtnId = -1 ;
/* org */
int orgDialogId = -1 ;
int orgMesId[8] = -1 ;
int orgOkBtnId = -1 ;
int orgCanBtnId = -1 ;
int orgSubDialogId = -1 ;
int orgFrameNumId = -1 ;
int orgSoundNumId = -1 ;
int orgSoundBtnId = -1 ;
/* pac */
int pacDialogId = -1 ;
int pacSubDialogId = -1 ;
int pacFilterBar = -1 ;
int pacSoftBar = -1 ;
int pacFilterNumId = -1 ;
int pacSoftNumId = -1 ;
int pacMesId[5] = -1 ;
int pacOKBtnId = -1 ;
int pacCanBtnId = -1 ;
int pacWaitDialogId = -1 ;
int pacWaitMesId[2] = -1 ;
int pacWaitNumId[2] = -1 ;
/* ply */
int plyDialogId = -1 ;
int plySubDialogId = -1 ;
int plyWaitNumId = -1 ;
int plyBtnId[4] = -1 ;
int plyMesId[12] = -1 ;
int plyFrameNumId = -1 ;
int plyOkBtnId = -1 ;
int plyCanBtnId = -1 ;
/* edit */
int editDialogId = -1 ;
int editSubDialogId = -1 ;
int editMinDialogId[10] = -1 ;
int editMsgId[24] = -1 ;
int editNumBoxId[2][3] = -1 ;
int editFileMsgId[3] = -1 ;
int editBtnId[8] = -1 ;
int editOkBtnId = -1 ;
int editCanBtnId = -1 ;
int editWaitDialogId = -1 ;
int editWaitMsgId[1] = -1 ;
int editMosDialogId = -1 ;
int editMosMsgId[2] = -1 ;
int v02TableFlag ; /* v02 table flag */
char *v02Table ; /* v02 table */
int setFlag ; /* 表示設定のフラグ */
int wait ; /* ウェイト設定用ワーク */
int scnMode ; /* 画面モード設定用ワーク */
int zoom ; /* 倍率設定用ワーク */
int playMode ; /* 再生モード設定用ワーク */
int playFlag ; /* 再生中かどうかのフラグ */
int loop ; /* ループ再生のフラグ */
char v00Path[80] = '\0' ;
char mvbPath[80] = '\0' ;
char v02Path[80] = '\0' ;
char v02Path2[80] = '\0' ;
/*
IVDREC用基本セット
*/
static recType ; /* V00TYPE, MVBTYPE, DIRTYPE, AFRECTYPE */
static int recFlag ; /* 表示設定のフラグ */
static int recVol = 127 ; /* volume */
static int recFrame = 160 ; /* frame数 */
static int recMemory = 0 ; /* メモリ依存度 */
static int recMode = 0 ; /* 画面モード設定用ワーク */
static int recSpeed = 1 ; /* 録画速度 */
static int recSize = 1 ; /* frame size */
static int recFreq = 0 ; /* Sount freq */
/* frame数を設定 */
/* initDataIVDREC:recFrameNumId:MJ_NUMBOXL40の呼び出し関数 */
int recFrameSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int var, min, max, delta, ptColumn ;
MMI_SendMessage( kobj, MM_GETNUMBOX, 5,
&var, &min, &max, &delta, &ptColumn ) ;
recFrame = var ;
return NOERR ;
}
/* Memory Mode */
/* initDataIVDREC:recMemoryNumId:MJ_NUMBOXL40の呼び出し関数 */
int recMemorySet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int var, min, max, delta, ptColumn ;
MMI_SendMessage( kobj, MM_GETNUMBOX, 5,
&var, &min, &max, &delta, &ptColumn ) ;
recMemory = var ;
return NOERR ;
}
/* 録画モードを設定(ラジオボタン) */
/* initDataIVDREC:recBtnId[0]:MJ_TICONL40の呼び出し関数 */
/* initDataIVDREC:recBtnId[1]:MJ_TICONL40の呼び出し関数 */
/* initDataIVDREC:recBtnId[2]:MJ_TICONL40の呼び出し関数 */
int recModeSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
if( kobj == recBtnId[0] )
{
MTL_setFlagObj( recBtnId[0], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recMode+0],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recMode+0], MM_SHOW, 0 ) ;
recMode = 0 ;
}
else
if( kobj == recBtnId[1] )
{
MTL_setFlagObj( recBtnId[1], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recMode+0],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recMode+0], MM_SHOW, 0 ) ;
recMode = 1 ;
}
else
if( kobj == recBtnId[2] )
{
MTL_setFlagObj( recBtnId[2], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recMode+0],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recMode+0], MM_SHOW, 0 ) ;
recMode = 2 ;
}
/* memoryNumを有効にしたり無効にする特別処理 */
if( (recType == V00TYPE) || (recType == MVBTYPE) )
{
HYPER hyp ;
WINCLIP *pwclp ;
if( recMode != 1 )
{
MTL_resetAtrObj( recMemoryNumId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[1], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[2], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( recMemoryNumId, MS_INACTIVEL40 ) ;
MTL_setAtrObj( recMesId[1], MS_INACTIVEL40 ) ;
MTL_setAtrObj( recMesId[2], MS_INACTIVEL40 ) ;
}
else
{
MTL_resetAtrObj( recMemoryNumId, (~MS_DSPONLYL40) ) ; /* 正常 */
MTL_resetAtrObj( recMesId[1], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[2], (~MS_DSPONLYL40) ) ;
}
// MMI_SendMessage( recMemoryNumId, MM_SHOW, 0 ) ;
MMI_SendMessage( recMemoryNumId, MM_GETHYPER, 1, &hyp ) ;
pwclp = WIN_getClipMemory( &(hyp.fr), NULL ) ;
MMI_SendMessage( recMemoryNumId, MM_UPDATE, 1, pwclp ) ;
WIN_freeClipMemory( pwclp ) ;
MMI_SendMessage( recMesId[1], MM_SHOW, 0 ) ;
MMI_SendMessage( recMesId[2], MM_SHOW, 0 ) ;
}
return NOERR ;
}
/* speedを設定(ラジオボタン) */
/* initDataIVDREC:recBtnId[3]:MJ_TICONL40の呼び出し関数 */
/* initDataIVDREC:recBtnId[4]:MJ_TICONL40の呼び出し関数 */
/* initDataIVDREC:recBtnId[5]:MJ_TICONL40の呼び出し関数 */
/* initDataIVDREC:recBtnId[6]:MJ_TICONL40の呼び出し関数 */
int recSpeedSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
if( kobj == recBtnId[3] )
{
MTL_setFlagObj( recBtnId[3], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recSpeed+3],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recSpeed+3], MM_SHOW, 0 ) ;
recSpeed = 0 ;
}
else
if( kobj == recBtnId[4] )
{
MTL_setFlagObj( recBtnId[4], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recSpeed+3],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recSpeed+3], MM_SHOW, 0 ) ;
recSpeed = 1 ;
}
else
if( kobj == recBtnId[5] )
{
MTL_setFlagObj( recBtnId[5], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recSpeed+3],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recSpeed+3], MM_SHOW, 0 ) ;
recSpeed = 2 ;
}
else
if( kobj == recBtnId[6] )
{
MTL_setFlagObj( recBtnId[6], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recSpeed+3],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recSpeed+3], MM_SHOW, 0 ) ;
recSpeed = 3 ;
}
return NOERR ;
}
/* frame size を設定(ラジオボタン) */
/* initDataIVDREC:recBtnId[7~11]:MJ_TICONL40の呼び出し関数 */
int recFrameSizeSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
if( kobj == recBtnId[7] )
{
MTL_setFlagObj( recBtnId[7], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recSize+7],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recSize+7], MM_SHOW, 0 ) ;
recSize = 0 ;
}
else
if( kobj == recBtnId[8] )
{
MTL_setFlagObj( recBtnId[8], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recSize+7],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recSize+7], MM_SHOW, 0 ) ;
recSize = 1 ;
}
else
if( kobj == recBtnId[9] )
{
MTL_setFlagObj( recBtnId[9], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recSize+7],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recSize+7], MM_SHOW, 0 ) ;
recSize = 2 ;
}
else
if( kobj == recBtnId[10] )
{
MTL_setFlagObj( recBtnId[10], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recSize+7],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recSize+7], MM_SHOW, 0 ) ;
recSize = 3 ;
}
else
if( kobj == recBtnId[11] )
{
MTL_setFlagObj( recBtnId[11], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recSize+7],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recSize+7], MM_SHOW, 0 ) ;
recSize = 4 ;
}
return NOERR ;
}
/* sampling feq. 設定(ラジオボタン) */
/* initDataIVDREC:recBtnId[12~14]:MJ_TICONL40の呼び出し関数 */
int recFreqSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
if( kobj == recBtnId[12] )
{
MTL_setFlagObj( recBtnId[12], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recFreq+12],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recFreq+12], MM_SHOW, 0 ) ;
recFreq = 0 ;
}
else
if( kobj == recBtnId[13] )
{
MTL_setFlagObj( recBtnId[13], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recFreq+12],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recFreq+12], MM_SHOW, 0 ) ;
recFreq = 1 ;
}
else
if( kobj == recBtnId[14] )
{
MTL_setFlagObj( recBtnId[14], MS_UNSELECT ) ;
MTL_resetFlagObj( recBtnId[recFreq+12],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( recBtnId[recFreq+12], MM_SHOW, 0 ) ;
recFreq = 2 ;
}
return NOERR ;
}
/* volumeセット */
/* initDataIVDREC:recVolumeId:MJ_SCRLL40の呼び出し関数 */
int recVolumeSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int var, min, max, len, page, s ;
MMI_SendMessage( kobj, MM_GETSCROLL, 5,
&var, &min, &max, &len, &page ) ;
recVol = var ;
if( recVol ) /* line volume set */
SND_elevol_set( 0, recVol, recVol );
else
{
SND_get_elevol_mute( &s ) ;
SND_elevol_mute( s & 0xfffffff3 ) ;
}
return NOERR ;
}
/* 設定するか、取り消すか? */
/* initDataIVDREC:recOkBtnId:MJ_DBUTTONL40の呼び出し関数 */
/* initDataIVDREC:recCanBtnId:MJ_DBUTTONL40の呼び出し関数 */
int recOkchk(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
if( (kobj == recOkBtnId) || (kobj == recSndOkBtnId) )
recFlag = TRUE ;
else
recFlag = FALSE ;
MMI_SetHaltFlag( TRUE ) ;
return NOERR ;
}
/*
IVDORG基本セット
*/
static int orgFlag ; /* OK or NO */
static int orgSndOfst ; /* Sound Offset */
static char *orgPath ; /* file name */
/* 設定するか、取り消すか? */
/* initDataIVDORG:orgOkBtnId:MJ_DBUTTONL40の呼び出し関数 */
/* initDataIVDORG:orgCanBtnId:MJ_DBUTTONL40の呼び出し関数 */
int orgOkchk(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
if( kobj == orgOkBtnId )
orgFlag = TRUE ;
else
orgFlag = FALSE ;
MMI_SetHaltFlag( TRUE ) ;
return NOERR ;
}
/* Sound offset を設定 */
/* initDataIVDORG:orgSoundNumId:MJ_NUMBOXL40の呼び出し関数 */
int orgSoundSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int var, min, max, delta, ptColumn ;
MMI_SendMessage( kobj, MM_GETNUMBOX, 5,
&var, &min, &max, &delta, &ptColumn ) ;
orgSndOfst = var ;
return NOERR ;
}
/* Sound offset 書き込み */
/* initDataIVDORG:orgSoundBtnId:MJ_DBUTTONL40の呼び出し関数 */
int orgSoundwriteOK(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
FILE *fp ;
char names[100], buf[8] ;
/* Sound offset の 書き込み */
if( file_kakuchousi_set( names, orgPath, ".SND" ) )
{
errorCheck( 2 ) ;
return NOERR;
}
if( ( fp = fopen( names, "r+b" ) ) == NULL )
{
errorCheck( 2 ) ;
return NOERR;
}
fseek( fp, 16, SEEK_SET );
DWORD( buf ) = orgSndOfst ;
DWORD( buf+4 ) = 0 ;
if( fwrite( buf, 8, 1, fp ) < 1 )
{
fclose(fp) ;
errorCheck( 2 ) ;
return NOERR;
}
fclose(fp) ;
return NOERR ;
}
/*
IVDPAC基本セット
*/
static int pacFlag ; /* YES or NO */
static int pacFilter = 3 ; /* filer */
static int pacSoft = 5 ; /* soft */
/* filter */
/* initDataIVDPAC:pacFilterBar:MJ_SCRLL40の呼び出し関数 */
int pacFilterSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int var, min, max, len, page ;
MMI_SendMessage( kobj, MM_GETSCROLL, 5,
&var, &min, &max, &len, &page ) ;
pacFilter = var*3 / 16 ; /* var * 値の初期値 / バーの初期値 */
MMI_SendMessage( pacFilterNumId, MM_SETNUMBOX, 5,
pacFilter, 0, pacFilter, 1, 0 ) ;
/* var, min, max, delta, ptColumn */
MMI_SendMessage( pacFilterNumId, MM_SHOW, 0 ) ;
return NOERR ;
}
/* soft */
/* initDataIVDPAC:pacSoftBar:MJ_SCRLL40の呼び出し関数 */
int pacSoftSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int var, min, max, len, page ;
MMI_SendMessage( kobj, MM_GETSCROLL, 5,
&var, &min, &max, &len, &page ) ;
pacSoft = var*3 / 16 ; /* var * 値の初期値 / バーの初期値 */
MMI_SendMessage( pacSoftNumId, MM_SETNUMBOX, 5,
pacSoft, 0, pacSoft, 1, 0 ) ;
/* var, min, max, delta, ptColumn */
MMI_SendMessage( pacSoftNumId, MM_SHOW, 0 ) ;
return NOERR ;
}
/* 設定するか、取り消すか? */
/* initDataIVDPAC:pacOKBtnId:MJ_DBUTTONL40の呼び出し関数 */
/* initDataIVDPAC:pacCanBtnId:MJ_DBUTTONL40の呼び出し関数 */
int pacOKchk(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
if( kobj == pacOKBtnId )
pacFlag = TRUE ;
else
pacFlag = FALSE ;
MMI_SetHaltFlag( TRUE ) ;
return NOERR ;
}
/*
IVDPLY基本セット
*/
static int plyFlag ; /* YES or NO */
static int plyWait = 0 ; /* wait */
static int plyMul = 1 ; /* mul */
/* initDataIVDPLY:plyWaitNumId:MJ_NUMBOXL40の呼び出し関数 */
int plyWaitSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int var, min, max, delta, ptColumn ;
MMI_SendMessage( kobj, MM_GETNUMBOX, 5,
&var, &min, &max, &delta, &ptColumn ) ;
plyWait = var ;
return NOERR ;
}
/* frameSize設定(ラジオボタン) */
/* initDataIVDPLY:plyBtnId[0]:MJ_TICONL40の呼び出し関数 */
/* initDataIVDPLY:plyBtnId[1]:MJ_TICONL40の呼び出し関数 */
/* initDataIVDPLY:plyBtnId[2]:MJ_TICONL40の呼び出し関数 */
/* initDataIVDPLY:plyBtnId[3]:MJ_TICONL40の呼び出し関数 */
int plyMulSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
if( kobj == plyBtnId[0] )
{
MTL_setFlagObj( plyBtnId[0], MS_UNSELECT ) ;
MTL_resetFlagObj( plyBtnId[plyMul+0],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( plyBtnId[plyMul+0], MM_SHOW, 0 ) ;
plyMul = 0 ;
}
else
if( kobj == plyBtnId[1] )
{
MTL_setFlagObj( plyBtnId[1], MS_UNSELECT ) ;
MTL_resetFlagObj( plyBtnId[plyMul+0],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( plyBtnId[plyMul+0], MM_SHOW, 0 ) ;
plyMul = 1 ;
}
else
if( kobj == plyBtnId[2] )
{
MTL_setFlagObj( plyBtnId[2], MS_UNSELECT ) ;
MTL_resetFlagObj( plyBtnId[plyMul+0],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( plyBtnId[plyMul+0], MM_SHOW, 0 ) ;
plyMul = 2 ;
}
else
if( kobj == plyBtnId[3] )
{
MTL_setFlagObj( plyBtnId[3], MS_UNSELECT ) ;
MTL_resetFlagObj( plyBtnId[plyMul+0],
(~(MS_UNSELECT | MS_TOGGLE)) ) ;
MMI_SendMessage( plyBtnId[plyMul+0], MM_SHOW, 0 ) ;
plyMul = 3 ;
}
return NOERR ;
}
/* 設定するか、取り消すか? */
/* initDataIVDPLY:plyOkBtnId:MJ_DBUTTONL40の呼び出し関数 */
/* initDataIVDPLY:plyCanBtnId:MJ_DBUTTONL40の呼び出し関数 */
int plyPlaychk(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
if( kobj == plyOkBtnId )
plyFlag = TRUE ;
else
plyFlag = FALSE ;
MMI_SetHaltFlag( TRUE ) ;
return NOERR ;
}
/*
IVDEDT基本セット
*/
static int editType ; /* V00TYPE, MVBTYPE */
static int editFlag ; /* YES or NO */
static char v00EditPath[3][100] = '\0' ; /* file */
static char mvbEditPath[3][100] = '\0' ; /* file */
static char v02EditPath[3][100] = '\0' ; /* file */
static char dummyEditPath[3][100] = '\0' ; /* 表示用(字数over等に対応) */
static int v00EditNum[2][3] = 0 ; /* file data number */
static int mvbEditNum[2][3] = 0 ; /* file data number */
static int v02EditNum[2][3] = 0 ; /* file data number */
/* ファイル設定 */
/* initDataIVDEDT:editBtnId[0]:MJ_DBUTTONL40の呼び出し関数 */
/* initDataIVDEDT:editBtnId[1]:MJ_DBUTTONL40の呼び出し関数 */
/* initDataIVDEDT:editBtnId[2]:MJ_DBUTTONL40の呼び出し関数 */
int editFileInput(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
char *ExtStr0[] = { "*.V00", NULL } ;
char *ExtStr1[] = { "*.MVB", NULL } ;
char *ExtStr2[] = { "*.V02", NULL } ;
char path[100] ;
int i, type ; /* 第1,第2,合成の区別 */
int ret ;
for( i=0 ; i<3 ; i++ )
{
if( kobj == editBtnId[i] )
{
type = i ;
break ;
}
}
if( type >= 3 )return NOERR ;
MTL_setAtrObj( editDialogId, MS_DSPONLYL40 ) ;
if( editType == V00TYPE )
{
ret = fileSelecter(v00EditPath[ type ], ExtStr0,
"VOOファイル", "選 択", "取 消");
if( ret == NOERR )
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v00EditPath[ type ], ".V00" ) ;
for( i=0 ; i<80 ; i++ )
v00EditPath[ type ][ i ] = path[i] ;
setDummyPath( v00EditPath[type], dummyEditPath[type] ) ;
}
}
if( editType == MVBTYPE )
{
ret = fileSelecter(mvbEditPath[ type ], ExtStr1,
"MVBファイル", "選 択", "取 消");
if( ret == NOERR )
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, mvbEditPath[ type ], ".MVB" ) ;
for( i=0 ; i<80 ; i++ )
mvbEditPath[ type ][ i ] = path[i] ;
setDummyPath( mvbEditPath[type], dummyEditPath[type] ) ;
}
}
if( editType == V02TYPE )
{
ret = fileSelecter(v02EditPath[ type ], ExtStr2,
"VO2ファイル", "選 択", "取 消");
if( ret == NOERR )
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v02EditPath[ type ], ".V02" ) ;
for( i=0 ; i<80 ; i++ )
v02EditPath[ type ][ i ] = path[i] ;
setDummyPath( v02EditPath[type], dummyEditPath[type] ) ;
}
}
if( ret == NOERR )
{
editDialogSet( type, 0 ) ;
MMI_SendMessage( editMinDialogId[type], MM_SHOW, 0 ) ;
if( type <= 1 )
{
for( i=0 ; i<3 ; i++ )
MMI_SendMessage( editNumBoxId[type][i], MM_SHOW, 0 ) ;
MMI_SendMessage( editMinDialogId[type+3], MM_SHOW, 0 ) ;
}
}
MTL_resetAtrObj( editDialogId, (~MS_DSPONLYL40) ) ;
return NOERR ;
}
/* 再生 */
/* initDataIVDEDT:editBtnId[3]:MJ_DBUTTONL40の呼び出し関数 */
/* initDataIVDEDT:editBtnId[4]:MJ_DBUTTONL40の呼び出し関数 */
/* initDataIVDEDT:editBtnId[5]:MJ_DBUTTONL40の呼び出し関数 */
int editPlaychk(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int i, type ; /* 第1,第2,合成の区別 */
int ret ;
for( i=3 ; i<6 ; i++ )
{
if( kobj == editBtnId[i] )
{
type = i - 3 ;
break ;
}
}
if( type >= 3 )return NOERR ;
MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
if( editType == V00TYPE )
{
int frame, x, y, wt ;
int dummy ;
if( type <= 1 )
ret = v00_head_read_skip( v00EditPath[type],
&frame, &x, &y, &wt, v00EditNum[type][1] ) ;
else /* data収集 */
ret = v00_head_read( v00EditPath[type], &frame, &x, &y, &wt ) ;
if( ret == NOERR )
{
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
MG_mosDisp( 0 ) ;
if( type <= 1 )
ret = v00_play2( v00EditPath[type],
v00EditNum[type][1], v00EditNum[type][2], &dummy, 0 );
else
ret = v00_play2( v00EditPath[type], 0, 0x7fffffff, &dummy, 0 );
MG_mosDisp( 1 ) ;
}
}
if( editType == MVBTYPE )
{
int frame, x, y, wt ;
if( type <= 1 )
ret = mvb_head_read_skip( mvbEditPath[type],
&frame, &x, &y, &wt, mvbEditNum[type][1] ) ;
else /* data収集 */
ret = mvb_head_read( mvbEditPath[type],
&frame, &x, &y, &wt ) ;
if( ret == NOERR )
{
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
MG_mosDisp( 0 ) ;
if( type <= 1 )
ret = mvb_play2( mvbEditPath[type],
mvbEditNum[type][1], mvbEditNum[type][2], 0 );
else
ret = mvb_play2( mvbEditPath[type], 0, 0x7fffffff, 0 );
MG_mosDisp( 1 ) ;
}
}
if( editType == V02TYPE )
{
int frame, x, y, wt, koma, freq, sndpack ;
if( type <= 1 )
{
ret = v02_head_read_only( v02EditPath[type],
&frame, &x, &y, &wt, &koma, &freq, &sndpack ) ;
if( ret == NOERR )
{
v02_graph_init( 2, x, y ) ; /* 倍率にあわせて画面設定 */
MG_mosDisp( 0 ) ;
ret = v02_play2( v02EditPath[type], 2, 0,
v02EditNum[type][1], v02EditNum[type][2] );
MG_mosDisp( 1 ) ;
v_waku_clear( x, y, 2 ) ; /* 枠抜きしたことにする */
} /* 本当は既に枠抜けてるが,閉めるためのだまし効果 */
}
else
{
ret = v02_wide_head_read_and_dsp( v02EditPath[type],
&frame, &x, &y, &wt, 1, TL_malloc, TL_free ) ;
if( ret == NOERR )
{
v02_graph_init( 2, x, y ) ; /* 倍率にあわせて画面設定 */
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
MG_mosDisp( 0 ) ;
ret = v02_play( v02EditPath[type], 2, 0 ) ;
MG_mosDisp( 1 ) ;
}
}
}
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
if( ret == NOERR )
{
MMI_SendMessage( editMosDialogId, MM_ATTACH, 1, MMI_GetBaseObj());
MMI_SendMessage( editMosDialogId, MM_SHOW, 0 ) ;
MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
MMI_SendMessage( editMosDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( editMosDialogId, MM_DETACH, 0 ) ;
}
r_waku_del() ; /* 枠を閉める */
MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ; /* 全体を見せる */
if( ret )
errorCheck( ret ) ;
return NOERR ;
}
/* 再生終了確認 */
/* initDataIVDEDT:editBtnId[7]:MJ_DBUTTONL40の呼び出し関数 */
int editPlayEnd(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
MMI_SetHaltFlag( TRUE ) ;
return NOERR ;
}
/* 数値設定 */
/* initDataIVDEDT:editNumBoxId[0][1]:MJ_NUMBOXL40の呼び出し関数 */
/* initDataIVDEDT:editNumBoxId[0][2]:MJ_NUMBOXL40の呼び出し関数 */
/* initDataIVDEDT:editNumBoxId[1][1]:MJ_NUMBOXL40の呼び出し関数 */
/* initDataIVDEDT:editNumBoxId[1][2]:MJ_NUMBOXL40の呼び出し関数 */
int editFileNumSet(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int i, j, type, num ;
int var, min, max, delta, ptColumn ;
type = -1 ;
for( i=0 ; i<2 ; i++ )
{
for( j=1 ; j<3 ; j++ )
{
if( kobj == editNumBoxId[i][j] )
{
type = i ;
num = j ;
}
}
}
if( type == -1 )return NOERR ;
MMI_SendMessage(kobj, MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
if( editType == V00TYPE )
v00EditNum[type][num] = var ;
if( editType == MVBTYPE )
mvbEditNum[type][num] = var ;
if( editType == V02TYPE )
v02EditNum[type][num] = var ;
return NOERR ;
}
/* ファイル消去 */
/* initDataIVDEDT:editBtnId[6]:MJ_DBUTTONL40の呼び出し関数 */
int editFileDel(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int i ;
if( editType == V00TYPE )
v00EditPath[1][0] = '\0' ;
if( editType == MVBTYPE )
mvbEditPath[1][0] = '\0' ;
if( editType == V02TYPE )
v02EditPath[1][0] = '\0' ;
dummyEditPath[1][0] = '\0' ; /* 表示用も消す */
editDialogSet( 1, 0 ) ;
MMI_SendMessage( editMinDialogId[1], MM_SHOW, 0 ) ;
for( i=0 ; i<3 ; i++ )
MMI_SendMessage( editNumBoxId[1][i], MM_SHOW, 0 ) ;
MMI_SendMessage( editMinDialogId[4], MM_SHOW, 0 ) ;
return NOERR ;
}
/* 設定するか、取り消すか? */
/* initDataIVDEDT:editOkBtnId:MJ_DBUTTONL40の呼び出し関数 */
/* initDataIVDEDT:editCanBtnId:MJ_DBUTTONL40の呼び出し関数 */
int editOkchk(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
if( kobj == editOkBtnId )
editFlag = TRUE ;
else
editFlag = FALSE ;
MMI_SetHaltFlag( TRUE ) ;
return NOERR ;
}
/* 各種セッティング */
int editDialogSet( t, m ) /* t:type(0~2) 第1,第2,合成の区別 */
int t, m ; /* m:mode 0ならframeClear 1ならframe変更なし */
{
int ret ;
static char speed[][20] = { "毎秒8.6フレーム",
"毎秒 10フレーム",
"毎秒 12フレーム",
"毎秒 15フレーム"
} ;
static char waku[][20] = { "128× 96ドット",
"160×120ドット",
"192×144ドット",
"256×192ドット",
"320×240ドット"
} ;
static char non[4] = "\0" ;
if( editType == V00TYPE )
{
int frame, x, y, wt ;
setDummyPath( v00EditPath[t], dummyEditPath[t] ) ;
MMI_SendMessage( editFileMsgId[t], MM_SETMSG, 1, dummyEditPath[t] );
if( t <= 1 )
{
int var, min, max, delta, ptColumn ;
ret = v00_head_read_only( v00EditPath[t], &frame, &x, &y, &wt ) ;
if( ret )
{
frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
}
if( frame >= 0 )
MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
frame, 0, frame, 1, 0 ) ;
else
MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
-1, -1, 0, 1, 0 ) ;
if( wt >= 4 && wt <= 7 ) /* 毎秒フレーム数表示 */
MMI_SendMessage(editMsgId[t*2+1],MM_SETMSG,1,speed[7-wt]);
else
MMI_SendMessage(editMsgId[t*2+1], MM_SETMSG, 1, non );
if( x == 128 && y == 96 ) /* 画面の大きさ表示 */
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[0]);
else if( x == 160 && y == 120 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[1]);
else if( x == 192 && y == 144 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[2]);
else if( x == 256 && y == 192 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[3]);
else if( x == 320 && y == 240 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[4]);
else
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, non) ;
if( m == 0 )
{
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
if( frame < 0 )max = 99999 ;
var = min ;
MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
v00EditNum[t][1] = var ;
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
if( frame < 0 )max = 99999 ;
var = max ;
MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
v00EditNum[t][2] = var ;
}
else
{
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
if( frame < 0 )max = 99999 ;
var = v00EditNum[t][1] ;
MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
v00EditNum[t][1] = var ;
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
if( frame < 0 )max = 99999 ;
var = v00EditNum[t][2] ;
MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
v00EditNum[t][2] = var ;
}
}
}
if( editType == MVBTYPE )
{
int frame, x, y, wt ;
setDummyPath( mvbEditPath[t], dummyEditPath[t] ) ;
MMI_SendMessage( editFileMsgId[t], MM_SETMSG, 1, dummyEditPath[t] );
if( t <= 1 )
{
int var, min, max, delta, ptColumn ;
ret = mvb_head_read_only( mvbEditPath[t], &frame, &x, &y, &wt ) ;
if( ret )
{
frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
}
if( frame >= 0 )
MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
frame, 0, frame, 1, 0 ) ;
else
MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
-1, -1, 0, 1, 0 ) ;
if( wt >= 4 && wt <= 7 ) /* 毎秒フレーム数表示 */
MMI_SendMessage(editMsgId[t*2+1],MM_SETMSG,1,speed[7-wt]);
else
MMI_SendMessage(editMsgId[t*2+1], MM_SETMSG, 1, non );
if( x == 128 && y == 96 ) /* 画面の大きさ表示 */
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[0]);
else if( x == 160 && y == 120 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[1]);
else if( x == 192 && y == 144 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[2]);
else if( x == 256 && y == 192 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[3]);
else if( x == 320 && y == 240 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[4]);
else
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, non) ;
if( m == 0 )
{
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
var = min ;
MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
mvbEditNum[t][1] = var ;
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
var = max ;
MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
mvbEditNum[t][2] = var ;
}
else
{
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
var = mvbEditNum[t][1] ;
MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
mvbEditNum[t][1] = var ;
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
var = mvbEditNum[t][2] ;
MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
mvbEditNum[t][2] = var ;
}
}
}
if( editType == V02TYPE )
{
int frame, x, y, wt ;
setDummyPath( v02EditPath[t], dummyEditPath[t] ) ;
MMI_SendMessage( editFileMsgId[t], MM_SETMSG, 1, dummyEditPath[t] );
if( t <= 1 )
{
int var, min, max, delta, ptColumn, koma, freq, sndpack ;
ret = v02_head_read_only( v02EditPath[t], &frame, &x, &y, &wt,
&koma, &freq, &sndpack ) ;
if( ret )
{
frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
}
if( frame >= 0 )
MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
frame, 0, frame, 1, 0 ) ;
else
MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
-1, -1, 0, 1, 0 ) ;
if( wt >= 4 && wt <= 7 ) /* 毎秒フレーム数表示 */
MMI_SendMessage(editMsgId[t*2+1],MM_SETMSG,1,speed[7-wt]);
else
MMI_SendMessage(editMsgId[t*2+1], MM_SETMSG, 1, non );
if( x == 128 && y == 96 ) /* 画面の大きさ表示 */
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[0]);
else if( x == 160 && y == 120 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[1]);
else if( x == 192 && y == 144 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[2]);
else if( x == 256 && y == 192 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[3]);
else if( x == 320 && y == 240 )
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[4]);
else
MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, non) ;
if( m == 0 )
{
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
var = min ;
MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
v02EditNum[t][1] = var ;
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
var = max ;
MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
v02EditNum[t][2] = var ;
}
else
{
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
var = v02EditNum[t][1] ;
MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
v02EditNum[t][1] = var ;
min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
if( max < min )max = min ;
var = v02EditNum[t][2] ;
MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
5, var, min, max, delta, ptColumn);
MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
5, &var, &min, &max, &delta, &ptColumn);
v02EditNum[t][2] = var ;
}
}
}
return NOERR ;
}
/* 各種セッティングのサブ(pathを字数オーバしなようにdummyにセットする) */
setDummyPath( path, dummy )
char *path ;
char *dummy ;
{
int i, j ;
for( i=0 ; i<80 ; i++ )
{
dummy[i] = path[i] ;
if( path[i] == '\0' )break ;
}
if( i <= 40 )return NOERR ;
i -= 40 ;
for( j=0 ; j<40 ; j++ )
{
dummy[j] = path[i++] ;
if( dummy[j] == '\0' )break ;
if( j < 5 )dummy[j] = '.' ;
}
if( j == 40 )dummy[j] = '\0' ;
return NOERR ;
}
/* v00録画ダイアログ表示 */
int selectFunc0(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
char path[100] ;
char *ExtStr[] = { "*.V00", NULL } ;
int i, ret ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
MMI_SendMessage( recFrameNumId, MM_SETNUMBOX, 5, /* 録画フレーム数変更 */
recFrame, 0, 999999, 1, 0 ) ;
/* var, min, max, delta, ptColumn */
ret = fileSelecter(v00Path, ExtStr, "VOOファイル", "選 択", "取 消");
if( ret )
{
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
else
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v00Path, ".V00" ) ;
for( i=0 ; i<80 ; i++ )
v00Path[i] = path[i] ;
}
recType = V00TYPE ; /* IVDREC基本セットがrecTypeを参照する */
MMI_SendMessage( recMesId[0], MM_SETMSG, 1, "VOO 録 画" ) ;
MMI_SendMessage( recDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MTL_setFlagObj( recBtnId[recMode+0], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_setFlagObj( recBtnId[recSpeed+3], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_setFlagObj( recBtnId[recSize+7], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_setFlagObj( recBtnId[recFreq+12], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_resetAtrObj( recMemoryNumId, (~MS_DSPONLYL40) ) ; /* 1~2bit clear */
MTL_resetAtrObj( recMesId[1], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[2], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[3], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[4], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[5], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[6], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recBtnId[12], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recBtnId[13], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recBtnId[14], (~MS_DSPONLYL40) ) ;
if( recMode != 1 )
{
MTL_setAtrObj( recMemoryNumId, MS_INACTIVEL40 ) ;
MTL_setAtrObj( recMesId[1], MS_INACTIVEL40 ) ;
MTL_setAtrObj( recMesId[2], MS_INACTIVEL40 ) ;
}
MTL_setAtrObj( recMesId[3], MS_INACTIVEL40 ) ;
MTL_setAtrObj( recMesId[4], MS_INACTIVEL40 ) ;
MTL_setAtrObj( recMesId[5], MS_INACTIVEL40 ) ;
MTL_setAtrObj( recMesId[6], MS_INACTIVEL40 ) ;
MTL_setAtrObj( recBtnId[12], MS_INACTIVEL40 ) ;
MTL_setAtrObj( recBtnId[13], MS_INACTIVEL40 ) ;
MTL_setAtrObj( recBtnId[14], MS_INACTIVEL40 ) ;
MMI_SendMessage( recDialogId, MM_SHOW, 0 ) ; /* 全体を見せる */
SND_elevol_set( 0, recVol, recVol );
MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
MMI_SendMessage( recDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( recDialogId, MM_DETACH, 0 ) ;
if( recFlag == TRUE )
{
r_waku_del() ; /* 枠を閉める */
MG_mosDisp( 0 ) ;
switch( recMode )
{
case 0: ret = v00_digit_snd_save( v00Path, recFrame, recSize+1,
7-recSpeed ) ;
break ;
case 1: if( recMemory == 0 )
ret = v00_digit_save_0( v00Path, recFrame, recSize+1,
7-recSpeed ) ;
if( recMemory > 0 && recMemory < 100 )
ret = v00_digit_save_2( v00Path, recFrame, recSize+1,
7-recSpeed ) ;
if( recMemory == 100 )
ret = v00_digit_save_3( v00Path, recFrame, recSize+1,
7-recSpeed ) ;
break ;
case 2: ret = file_kakuchousi_set( path, v00Path, ".SND" ) ;
if( ret == NOERR )
ret = v00_pcm_snd_save( path, recFrame, 7-recSpeed ) ;
break ;
}
displayClearAndReset() ;
setPalette( guiEgbPtr ) ;
diplayRecov() ;
if( ret == NOERR )
{
int frame, x, y, wt ;
ret = v00_head_read( v00Path, &frame, &x, &y, &wt ) ;
if( ret == NOERR )
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
else
ret = NOERR ; /* 録音のみの場合,原画がナクテモERRORにできない */
}
MG_mosDisp( 1 ) ;
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
if( ret )
errorCheck( ret ) ;
}
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
int s ; /* なくてもいいけど念のため */
SND_get_elevol_mute( &s ) ;
SND_elevol_mute( s & 0xfffffff3 ) ;
return NOERR ;
}
/* v00再生ダイアログ表示 */
int selectFunc1(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int i, ret ;
char path[100] ;
char *ExtStr[] = { "*.V00", NULL } ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
ret = fileSelecter(v00Path, ExtStr, "VOOファイル", "再 生", "取 消");
if( ret )
{
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
else
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v00Path, ".V00" ) ;
for( i=0 ; i<80 ; i++ )
{
v00Path[i] = path[i] ;
orgPath = v00Path ; /* recPathは基本セットが参照する */
}
}
MMI_SendMessage( orgMesId[0], MM_SETMSG, 1, "VOO 再 生" ) ;
if( ret == NOERR )
{
int fdummy, frame, x, y, wt, max ;
char names[100], head[32] ;
char speed[][20] = { "毎秒8.6フレーム",
"毎秒 10フレーム",
"毎秒 12フレーム",
"毎秒 15フレーム"
} ;
char waku[][20] = { "128× 96ドット",
"160×120ドット",
"192×144ドット",
"256×192ドット",
"320×240ドット"
} ;
char non[4] = "\0" ;
FILE *fp ;
r_waku_del() ; /* 枠を閉める */
ret = v00_head_read( v00Path, &frame, &x, &y, &wt ) ; /* data収集 */
if( ret )
{
frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
}
if( frame >= 0 )
MMI_SendMessage( orgFrameNumId, MM_SETNUMBOX, 5,
frame, 0, frame, 1, 0 ) ;
else
MMI_SendMessage( orgFrameNumId, MM_SETNUMBOX, 5,
-1, -1, 0, 1, 0 ) ;
/* var, min, max, delta, ptColumn フレーム数表示 */
if( wt >= 4 && wt <= 7 ) /* 毎秒フレーム数表示 */
MMI_SendMessage( orgMesId[1], MM_SETMSG, 1, speed[7-wt] ) ;
else
MMI_SendMessage( orgMesId[1], MM_SETMSG, 1, non ) ;
if( x == 128 && y == 96 ) /* 画面の大きさ表示 */
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[0] ) ;
else if( x == 160 && y == 120 )
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[1] ) ;
else if( x == 192 && y == 144 )
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[2] ) ;
else if( x == 256 && y == 192 )
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[3] ) ;
else if( x == 320 && y == 240 )
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[4] ) ;
else
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, non ) ;
/* Sound offset の 取得 */
orgSndOfst = 0 ;
max = 99999 ;
if( file_kakuchousi_set( names, v00Path, ".SND" ) )goto vd00 ;
if( ( fp = fopen( names, "rb" ) ) == NULL )goto vd00 ;
if( fread( head, 32, 1, fp ) < 1 )
{
fclose(fp);
goto vd00;
}
max = DWORD( head+12 ) ;
orgSndOfst = DWORD( head+16 ) ;
fclose(fp);
vd00: MMI_SendMessage( orgSoundNumId, MM_SETNUMBOX, 5,
orgSndOfst, 0, max, 1, 0 ) ;
/* var, min, max, delta, ptColumn */
if( ret == NOERR )
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
org01: MG_mosDisp( 0 ) ;
if( ret == NOERR )
{
ret = v00_play( v00Path, orgSndOfst, &fdummy, 0 );
/* 名前, 音ずれ, フレーム数をバック, wait */
}
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
// if( mouseSwCheck() )TL_setInvalidMosFlag() ; /* ボタンヲ放シテ終ワルカライラナイ */
if( ret == NOERR )
{
MMI_SendMessage( orgDialogId, MM_ATTACH, 1,
MMI_GetBaseObj() ) ;
MMI_SendMessage( orgDialogId, MM_SHOW, 0 ) ; /* 見せる */
MG_mosDisp( 1 ) ;
MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
MMI_SendMessage( orgDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( orgDialogId, MM_DETACH, 0 ) ;
if( orgFlag == TRUE )
goto org01 ;
}
}
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
if( ret )
errorCheck( ret ) ;
return NOERR ;
}
/* V00圧縮ダイアログ表示 */
int selectFunc2(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int i, ret, packmode ;
char path[100] ;
char *ExtStr0[] = { "*.V00", NULL } ;
char *ExtStr1[] = { "*.V02", NULL } ;
if( kobj == fileMItemId[13] )
packmode = 1 ;
else
packmode = 0 ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
ret = fileSelecter(v00Path, ExtStr0, "VOOファイル", "選 択", "取 消");
if( ret )
{
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
else
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v00Path, ".V00" ) ;
for( i=0 ; i<80 ; i++ )
v00Path[i] = path[i] ;
}
if( packmode )
{
MMI_SendMessage( pacMesId[0], MM_SETMSG, 1, "VOO 瞬 間 圧 縮" ) ;
MTL_setAtrObj( pacFilterBar, MS_INACTIVEL40 ) ;
MTL_setAtrObj( pacSoftBar, MS_INACTIVEL40 ) ;
MTL_setAtrObj( pacFilterNumId, MS_INACTIVEL40 ) ;
MTL_setAtrObj( pacSoftNumId, MS_INACTIVEL40 ) ;
MTL_resetAtrObj( pacMesId[1], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( pacMesId[1], MS_INACTIVEL40 ) ;
MTL_resetAtrObj( pacMesId[2], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( pacMesId[2], MS_INACTIVEL40 ) ;
}
else
{
MMI_SendMessage( pacMesId[0], MM_SETMSG, 1, "VOO 圧 縮" ) ;
MTL_resetAtrObj( pacFilterBar, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( pacSoftBar, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( pacFilterNumId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( pacSoftNumId, (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( pacMesId[1], MS_DSPONLYL40 ) ;
MTL_setAtrObj( pacMesId[2], MS_DSPONLYL40 ) ;
}
if( ret == NOERR )
{
int frame, x, y, wt ;
r_waku_del() ; /* 枠を閉める */
ret = v00_head_read( v00Path, &frame, &x, &y, &wt ) ;
if( ret == NOERR )
{
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
ret = fileSelecter( v02Path, ExtStr1,
"VO2ファイル名", "選 択", "取 消" );
if( ret )
{ /* 中止する */
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v02Path, ".V02" ) ;
for( i=0 ; i<80 ; i++ )
v02Path[i] = path[i] ;
}
else goto v10 ;
MMI_SendMessage( pacDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( pacDialogId, MM_SHOW, 0 ) ; /* 見せる */
MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
MMI_SendMessage( pacDialogId, MM_ERASE, 0 ) ; /* 消す */
MMI_SendMessage( pacDialogId, MM_DETACH, 0 ) ;
if( pacFlag == TRUE )
{
MMI_SendMessage( pacWaitNumId[0], MM_SETNUMBOX, 5,
frame, 0, frame, 1, 0 ) ; /* 原画フレーム数設定 */
/* var, min, max, delta, ptColumn */
MMI_SendMessage( pacWaitNumId[1], MM_SETNUMBOX, 5,
0, 0, frame, 1, 0 ) ; /* 圧縮フレーム数設定 */
/* var, min, max, delta, ptColumn */
MMI_SendMessage( pacWaitDialogId, MM_ATTACH,
1, MMI_GetBaseObj() ) ;
MMI_SendMessage( pacWaitDialogId, MM_SHOW, 0 ) ; /* 見せる */
SetMouse16( 81, 0xf, 0x8 ) ; /* マウスカーソルをウエイト表示 */
if( v02TableFlag )
ret = v00_to_v02_t( v00Path, v02Path,
pacFilter, pacSoft, 6, 0, v02Table, packmode ) ;
else
ret = v00_to_v02( v00Path, v02Path,
pacFilter, pacSoft, 6, 0, packmode ) ;
SetMouse16( 80, 0xf, 0x8 ) ; /* マウスカーソルを元に */
MMI_SendMessage( pacWaitDialogId, MM_ERASE, 0 ) ; /* 消す */
MMI_SendMessage( pacWaitDialogId, MM_DETACH, 0 ) ;
}
}
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
/* メニューとボタンを使えるように戻す */
v10:
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
if( ret )
errorCheck( ret ) ;
return NOERR ;
}
/* mvb録画ダイアログ表示 */
int selectFunc3(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
char path[100] ;
char *ExtStr[] = { "*.MVB", NULL } ;
int i, ret ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
MMI_SendMessage( recFrameNumId, MM_SETNUMBOX, 5, /* 録画フレーム数変更 */
recFrame, 0, 999999, 1, 0 ) ;
/* var, min, max, delta, ptColumn */
ret = fileSelecter(mvbPath, ExtStr, "MVBファイル", "選 択", "取 消");
if( ret )
{
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
else
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, mvbPath, ".MVB" ) ;
for( i=0 ; i<80 ; i++ )
mvbPath[i] = path[i] ;
}
recType = MVBTYPE ; /* IVDREC基本セットがrecTypeを参照する */
MMI_SendMessage( recMesId[0], MM_SETMSG, 1, "MVB 録 画" ) ;
MMI_SendMessage( recDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MTL_setFlagObj( recBtnId[recMode+0], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_setFlagObj( recBtnId[recSpeed+3], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_setFlagObj( recBtnId[recSize+7], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_resetFlagObj( recBtnId[12], (~(MS_UNSELECT | MS_TOGGLE)) ) ;
MTL_resetFlagObj( recBtnId[13], (~(MS_UNSELECT | MS_TOGGLE)) ) ;
MTL_resetFlagObj( recBtnId[14], (~(MS_UNSELECT | MS_TOGGLE)) ) ;
if( recFreq >= 2 )recFreq = 0 ;
MTL_setFlagObj( recBtnId[recFreq+12], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_resetAtrObj( recMemoryNumId, (~MS_DSPONLYL40) ) ; /* 1~2bit clear */
MTL_resetAtrObj( recMesId[1], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[2], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[3], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[4], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( recMesId[4], MS_DSPONLYL40 ) ;
MTL_resetAtrObj( recMesId[5], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( recMesId[5], MS_DSPONLYL40 ) ;
MTL_resetAtrObj( recMesId[6], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( recMesId[6], MS_INACTIVEL40 ) ;
MTL_resetAtrObj( recBtnId[12], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recBtnId[13], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recBtnId[14], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( recBtnId[14], MS_INACTIVEL40 ) ;
if( recMode != 1 )
{
MTL_setAtrObj( recMemoryNumId, MS_INACTIVEL40 ) ;
MTL_setAtrObj( recMesId[1], MS_INACTIVEL40 ) ;
MTL_setAtrObj( recMesId[2], MS_INACTIVEL40 ) ;
}
MMI_SendMessage( recDialogId, MM_SHOW, 0 ) ; /* 全体を見せる */
SND_elevol_set( 0, recVol, recVol );
MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
MMI_SendMessage( recDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( recDialogId, MM_DETACH, 0 ) ;
if( recFlag == TRUE )
{
r_waku_del() ; /* 枠を閉める */
MG_mosDisp( 0 ) ;
switch( recMode )
{
case 0: ret = mvb_digit_snd_save( mvbPath, recFrame, recSize+1,
recFreq, 7-recSpeed ) ;
break ;
case 1: if( recMemory == 0 )
ret = mvb_digit_save_0( mvbPath, recFrame, recSize+1,
7-recSpeed ) ;
if( recMemory > 0 && recMemory < 100 )
ret = mvb_digit_save_2( mvbPath, recFrame, recSize+1,
7-recSpeed ) ;
if( recMemory == 100 )
ret = mvb_digit_save_3( mvbPath, recFrame, recSize+1,
7-recSpeed ) ;
break ;
case 2: ret = file_kakuchousi_set( path, mvbPath, ".SND" ) ;
if( ret == NOERR )
ret = mvb_pcm_snd_save( path, recFrame,
7-recSpeed, recFreq ) ;
break ;
}
displayClearAndReset() ;
setPalette( guiEgbPtr ) ;
diplayRecov() ;
if( ret == NOERR )
{
int frame, x, y, wt ;
ret = mvb_head_read( mvbPath, &frame, &x, &y, &wt ) ;
if( ret == NOERR )
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
else
ret = NOERR ; /* 録音のみの場合,原画がナクテモERRORにできない */
}
MG_mosDisp( 1 ) ;
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
if( ret )
errorCheck( ret ) ;
}
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
int s ; /* なくてもいいけど念のため */
SND_get_elevol_mute( &s ) ;
SND_elevol_mute( s & 0xfffffff3 ) ;
return NOERR ;
}
/* mvb再生ダイアログ表示 */
int selectFunc4(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int i, ret ;
char path[100] ;
char *ExtStr[] = { "*.MVB", NULL } ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
ret = fileSelecter(mvbPath, ExtStr, "MVBファイル", "再 生", "取 消");
if( ret )
{
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
else
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, mvbPath, ".MVB" ) ;
for( i=0 ; i<80 ; i++ )
{
mvbPath[i] = path[i] ;
orgPath = mvbPath ; /* orgPathは基本セットが参照する */
}
}
MMI_SendMessage( orgMesId[0], MM_SETMSG, 1, "MVB 再 生" ) ;
if( ret == NOERR )
{
int frame, x, y, wt, max ;
char names[100], head[32] ;
char speed[][20] = { "毎秒8.6フレーム",
"毎秒 10フレーム",
"毎秒 12フレーム",
"毎秒 15フレーム"
} ;
char waku[][20] = { "128× 96ドット",
"160×120ドット",
"192×144ドット",
"256×192ドット",
"320×240ドット"
} ;
char non[4] = "\0" ;
FILE *fp ;
r_waku_del() ; /* 枠を閉める */
ret = mvb_head_read( mvbPath, &frame, &x, &y, &wt ) ; /* data収集 */
if( ret )
{
frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
}
if( frame >= 0 )
MMI_SendMessage( orgFrameNumId, MM_SETNUMBOX, 5,
frame, 0, frame, 1, 0 ) ;
else
MMI_SendMessage( orgFrameNumId, MM_SETNUMBOX, 5,
-1, -1, 0, 1, 0 ) ;
/* var, min, max, delta, ptColumn フレーム数表示 */
if( wt >= 4 && wt <= 7 ) /* 毎秒フレーム数表示 */
MMI_SendMessage( orgMesId[1], MM_SETMSG, 1, speed[7-wt] ) ;
else
MMI_SendMessage( orgMesId[1], MM_SETMSG, 1, non ) ;
if( x == 128 && y == 96 ) /* 画面の大きさ表示 */
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[0] ) ;
else if( x == 160 && y == 120 )
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[1] ) ;
else if( x == 192 && y == 144 )
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[2] ) ;
else if( x == 256 && y == 192 )
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[3] ) ;
else if( x == 320 && y == 240 )
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[4] ) ;
else
MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, non ) ;
/* Sound offset の 取得 */
orgSndOfst = 0 ;
max = 99999 ;
if( file_kakuchousi_set( names, mvbPath, ".SND" ) )goto vd00 ;
if( ( fp = fopen( names, "rb" ) ) == NULL )goto vd00 ;
if( fread( head, 32, 1, fp ) < 1 )
{
fclose(fp);
goto vd00;
}
max = DWORD( head+12 ) ;
orgSndOfst = DWORD( head+16 ) ;
fclose(fp);
vd00: MMI_SendMessage( orgSoundNumId, MM_SETNUMBOX, 5,
orgSndOfst, 0, max, 1, 0 ) ;
/* var, min, max, delta, ptColumn */
if( ret == NOERR )
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
org01: MG_mosDisp( 0 ) ;
if( ret == NOERR )
{
ret = mvb_play( mvbPath, orgSndOfst, 0 );
/* 名前, 音ずれ, wait */
}
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
// if( mouseSwCheck() )TL_setInvalidMosFlag() ; /* ボタンヲ放シテ終ワルカライラナイ */
if( ret == NOERR )
{
MMI_SendMessage( orgDialogId, MM_ATTACH, 1,
MMI_GetBaseObj() ) ;
MMI_SendMessage( orgDialogId, MM_SHOW, 0 ) ; /* 見せる */
MG_mosDisp( 1 ) ;
MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
MMI_SendMessage( orgDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( orgDialogId, MM_DETACH, 0 ) ;
if( orgFlag == TRUE )
goto org01 ;
}
}
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
if( ret )
errorCheck( ret ) ;
return NOERR ;
}
/* mvb圧縮ダイアログ表示 */
int selectFunc5(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int i, ret, packmode ;
char path[100] ;
char *ExtStr0[] = { "*.MVB", NULL } ;
char *ExtStr1[] = { "*.V02", NULL } ;
if( kobj == fileMItemId[14] )
packmode = 1 ;
else
packmode = 0 ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
ret = fileSelecter(mvbPath, ExtStr0, "MVBファイル", "選 択", "取 消");
if( ret )
{
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
else
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, mvbPath, ".MVB" ) ;
for( i=0 ; i<80 ; i++ )
mvbPath[i] = path[i] ;
}
if( packmode )
{
MMI_SendMessage( pacMesId[0], MM_SETMSG, 1, "MVB 瞬 間 圧 縮" ) ;
MTL_setAtrObj( pacFilterBar, MS_INACTIVEL40 ) ;
MTL_setAtrObj( pacSoftBar, MS_INACTIVEL40 ) ;
MTL_setAtrObj( pacFilterNumId, MS_INACTIVEL40 ) ;
MTL_setAtrObj( pacSoftNumId, MS_INACTIVEL40 ) ;
MTL_resetAtrObj( pacMesId[1], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( pacMesId[1], MS_INACTIVEL40 ) ;
MTL_resetAtrObj( pacMesId[2], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( pacMesId[2], MS_INACTIVEL40 ) ;
}
else
{
MMI_SendMessage( pacMesId[0], MM_SETMSG, 1, "MVB 圧 縮" ) ;
MTL_resetAtrObj( pacFilterBar, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( pacSoftBar, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( pacFilterNumId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( pacSoftNumId, (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( pacMesId[1], MS_DSPONLYL40 ) ;
MTL_setAtrObj( pacMesId[2], MS_DSPONLYL40 ) ;
}
if( ret == NOERR )
{
int frame, x, y, wt ;
r_waku_del() ; /* 枠を閉める */
ret = mvb_head_read( mvbPath, &frame, &x, &y, &wt ) ;
if( ret == NOERR )
{
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
ret = fileSelecter( v02Path, ExtStr1,
"VO2ファイル名", "選 択", "取 消" );
if( ret )
{ /* 中止する */
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v02Path, ".V02" ) ;
for( i=0 ; i<80 ; i++ )
v02Path[i] = path[i] ;
}
else goto v10 ;
MMI_SendMessage( pacDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( pacDialogId, MM_SHOW, 0 ) ; /* 見せる */
MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
MMI_SendMessage( pacDialogId, MM_ERASE, 0 ) ; /* 消す */
MMI_SendMessage( pacDialogId, MM_DETACH, 0 ) ;
if( pacFlag == TRUE )
{
MMI_SendMessage( pacWaitNumId[0], MM_SETNUMBOX, 5,
frame, 0, frame, 1, 0 ) ; /* 原画フレーム数設定 */
/* var, min, max, delta, ptColumn */
MMI_SendMessage( pacWaitNumId[1], MM_SETNUMBOX, 5,
0, 0, frame, 1, 0 ) ; /* 圧縮フレーム数設定 */
/* var, min, max, delta, ptColumn */
MMI_SendMessage( pacWaitDialogId, MM_ATTACH,
1, MMI_GetBaseObj() ) ;
MMI_SendMessage( pacWaitDialogId, MM_SHOW, 0 ) ; /* 見せる */
SetMouse16( 81, 0xf, 0x8 ) ; /* マウスカーソルをウエイト表示 */
if( v02TableFlag )
ret = mvb_to_v02_t( mvbPath, v02Path,
pacFilter, pacSoft, 6, 0, v02Table, packmode ) ;
else
ret = mvb_to_v02( mvbPath, v02Path,
pacFilter, pacSoft, 6, 0, packmode ) ;
SetMouse16( 80, 0xf, 0x8 ) ; /* マウスカーソルを元に */
MMI_SendMessage( pacWaitDialogId, MM_ERASE, 0 ) ; /* 消す */
MMI_SendMessage( pacWaitDialogId, MM_DETACH, 0 ) ;
}
}
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
/* メニューとボタンを使えるように戻す */
v10:
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
if( ret )
errorCheck( ret ) ;
return NOERR ;
}
/* 瞬間圧縮ダイアログ表示 */
int selectFunc6(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
char path[100] ;
char *ExtStr[] = { "*.V02", NULL } ;
int i, ret ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
MMI_SendMessage(recFrameNumId, MM_SETNUMBOX, 5, /* 録画フレーム数変更 */
recFrame, 0, 999999, 1, 0 ) ;
/* var, min, max, delta, ptColumn */
ret = fileSelecter(v02Path, ExtStr, "VO2ファイル", "選 択", "取 消");
if( ret )
{
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
else
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v02Path, ".V02" ) ;
for( i=0 ; i<80 ; i++ )
v02Path[i] = path[i] ;
}
recType = DIRTYPE ;
MMI_SendMessage( recMesId[0], MM_SETMSG, 1, "瞬 間 圧 縮" ) ;
MMI_SendMessage( recDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MTL_setFlagObj( recBtnId[recMode+0], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_setFlagObj( recBtnId[recSpeed+3], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_setFlagObj( recBtnId[recSize+7], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_setFlagObj( recBtnId[recFreq+12], (MS_UNSELECT | MS_TOGGLE) ) ;
MTL_resetAtrObj( recMemoryNumId, (~MS_DSPONLYL40) ) ; /* 1~2bit clear */
MTL_setAtrObj( recMemoryNumId, MS_INACTIVEL40 ) ; /* 使用不可 */
MTL_resetAtrObj( recMesId[1], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( recMesId[1], MS_INACTIVEL40 ) ;
MTL_resetAtrObj( recMesId[2], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( recMesId[2], MS_INACTIVEL40 ) ;
MTL_resetAtrObj( recMesId[3], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recMesId[4], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( recMesId[4], MS_DSPONLYL40 ) ;
MTL_resetAtrObj( recMesId[5], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( recMesId[5], MS_DSPONLYL40 ) ;
MTL_resetAtrObj( recMesId[6], (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( recMesId[6], MS_DSPONLYL40 ) ;
MTL_resetAtrObj( recBtnId[12], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recBtnId[13], (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( recBtnId[14], (~MS_DSPONLYL40) ) ;
MMI_SendMessage( recDialogId, MM_SHOW, 0 ) ; /* 全体を見せる */
SND_elevol_set( 0, recVol, recVol );
MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
MMI_SendMessage( recDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( recDialogId, MM_DETACH, 0 ) ;
if( recFlag == TRUE )
{
char *buf, *ytab, *yytoy, *ctab, *v02tab, *point ;
int d ;
r_waku_del() ; /* 枠を閉める */
MG_mosDisp( 0 ) ;
if( (buf = (char *)TL_malloc( 32768+16384+32768 )) == NULL )
ret = 7 ;
if( ret == NOERR )
{
ytab = buf ;
yytoy = ytab + 32768 ;
ctab = yytoy + 16384 ;
v02tab = v02Table ;
point = v02Table + 32768 + 512 ;
for( i=0 ; i<32768 ; i++ )
{
d = WORD( point + (i<<1) ) ;
BYTE( ctab + i ) = d & 0xff ;
BYTE( ytab + i ) = d >> 8 ;
}
point = v02Table + 32768 + 512 + 65536 ;
for( i=0 ; i<4096 ; i++ )
{
WORD( yytoy + ( (i << 2) & 0x3f00 ) + (i & 0x3f) )
= BYTE( point + i ) ;
}
switch( recMode )
{
case 0:
if( recFreq == 2 )
ret = v02_digit_snd_save( v02Path, recFrame,
recSize+1, 7-recSpeed, ytab, ctab, v02tab );
else
ret = v02_digit_snd_save2( v02Path, recFrame,
recSize+1, recFreq, 7-recSpeed, ytab, ctab, v02tab );
break ;
case 1:
if( recFreq == 2 )
ret = v02_digit_save_0( v02Path, recFrame,
recSize+1, 7-recSpeed, ytab, ctab, v02tab );
else
ret = v02_digit_save_0_2( v02Path, recFrame,
recSize+1, recFreq, 7-recSpeed, ytab, ctab, v02tab );
break ;
case 2:
ret = v02_snd_save_0( v02Path ) ;
break ;
}
TL_free( buf ) ;
}
displayClearAndReset() ;
setPalette( guiEgbPtr ) ;
diplayRecov() ;
if( ret == NOERR )
{
int frame, x, y, wt ;
ret = v02_wide_head_read_and_dsp( v02Path, &frame, &x, &y, &wt, 1,
TL_malloc, TL_free ) ;
v02_graph_init( 2, x, y ) ; /* 倍率にあわせて画面設定 */
if( ret == NOERR )
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
}
MG_mosDisp( 1 ) ;
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
if( ret )
errorCheck( ret ) ;
}
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
int s ; /* なくてもいいけど念のため */
SND_get_elevol_mute( &s ) ;
SND_elevol_mute( s & 0xfffffff3 ) ;
return NOERR ;
}
/* アフレコダイアログ表示 */
int selectFunc7(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
char path[100] ;
char *ExtStr[] = { "*.V02", NULL } ;
int i, ret ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
MMI_SendMessage(recFrameNumId, MM_SETNUMBOX, 5, /* 録画フレーム数変更 */
recFrame, 0, 999999, 1, 0 ) ;
/* var, min, max, delta, ptColumn */
ret = fileSelecter(v02Path, ExtStr, "VO2ファイル", "選 択", "取 消");
if( ret )
{
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
else
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v02Path, ".V02" ) ;
for( i=0 ; i<80 ; i++ )
v02Path[i] = path[i] ;
}
recType = AFRECTYPE ;
MMI_SendMessage( recSndDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( recSndDialogId, MM_SHOW, 0 ) ; /* 全体を見せる */
SND_elevol_set( 0, recVol, recVol );
MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
MMI_SendMessage( recSndDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( recSndDialogId, MM_DETACH, 0 ) ;
if( recFlag == TRUE )
{
r_waku_del() ; /* 枠を閉める */
MG_mosDisp( 0 ) ;
ret = v02_snd_save_0( v02Path ) ;
displayClearAndReset() ;
setPalette( guiEgbPtr ) ;
diplayRecov() ;
if( ret == NOERR )
{
int frame, x, y, wt ;
ret = v02_wide_head_read_and_dsp( v02Path, &frame, &x, &y, &wt, 1,
TL_malloc, TL_free ) ;
v02_graph_init( 2, x, y ) ; /* 倍率にあわせて画面設定 */
if( ret == NOERR )
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
}
MG_mosDisp( 1 ) ;
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
if( ret )
errorCheck( ret ) ;
}
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
int s ; /* なくてもいいけど念のため */
SND_get_elevol_mute( &s ) ;
SND_elevol_mute( s & 0xfffffff3 ) ;
return NOERR ;
}
/* V02再生ダイアログ表示 */
int selectFunc8(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int i, ret ;
char path[100] ;
char *ExtStr[] = { "*.V02", NULL } ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
ret = fileSelecter(v02Path, ExtStr, "VO2ファイル", "再 生", "取 消");
if( ret )
{
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
else
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v02Path, ".V02" ) ;
for( i=0 ; i<80 ; i++ )
v02Path[i] = path[i] ;
}
MMI_SendMessage( plyMesId[0], MM_SETMSG, 1, "VO2 再 生" ) ;
if( ret == NOERR )
{
int frame, x, y, wt ;
int sizememo ;
char speed[][20] = { "毎秒8.6フレーム",
"毎秒 10フレーム",
"毎秒 12フレーム",
"毎秒 15フレーム"
} ;
char waku[][20] = { "128× 96ドット",
"160×120ドット",
"192×144ドット",
"256×192ドット",
"320×240ドット"
} ;
char non[4] = "\0" ;
r_waku_del() ; /* 枠を閉める */
ret = v02_wide_head_read_and_dsp( v02Path, &frame, &x, &y, &wt, 1,
TL_malloc, TL_free ) ;
/* ファイル名,フレーム数,xd,yd,wait */
if( ret )
{
frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
}
else
v02_graph_init( plyMul+1, x, y ) ; /* 倍率にあわせて画面設定 */
if( frame >= 0 )
MMI_SendMessage( plyFrameNumId, MM_SETNUMBOX, 5,
frame, 0, frame, 1, 0 ) ;
else
MMI_SendMessage( plyFrameNumId, MM_SETNUMBOX, 5,
-1, -1, 0, 1, 0 ) ;
/* var, min, max, delta, ptColumn フレーム数表示 */
if( wt >= 4 && wt <= 7 ) /* 毎秒フレーム数表示 */
MMI_SendMessage( plyMesId[1], MM_SETMSG, 1, speed[7-wt] ) ;
else
MMI_SendMessage( plyMesId[1], MM_SETMSG, 1, non ) ;
if( x == 128 && y == 96 ) /* 画面の大きさ表示 */
MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, waku[0] ) ;
else if( x == 160 && y == 120 )
MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, waku[1] ) ;
else if( x == 192 && y == 144 )
MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, waku[2] ) ;
else if( x == 256 && y == 192 )
MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, waku[3] ) ;
else if( x == 320 && y == 240 )
MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, waku[4] ) ;
else
MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, non ) ;
ply00: if( ret == NOERR )
{
sizememo = plyMul ;
v_waku_clear( x, y, plyMul+1 ) ; /* 枠抜き */
}
ply01: MG_mosDisp( 0 ) ;
if( ret == NOERR )
{
ret = v02_play( v02Path, plyMul+1, plyWait ) ;
}
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
// if( mouseSwCheck() )TL_setInvalidMosFlag() ; /* ボタンヲ放シテ終ワルカライラナイ */
if( ret == NOERR )
{
MMI_SendMessage( plyDialogId, MM_ATTACH, 1,
MMI_GetBaseObj() ) ;
MTL_setFlagObj( plyBtnId[plyMul+0],
(MS_UNSELECT | MS_TOGGLE) ) ;
MMI_SendMessage( plyDialogId, MM_SHOW, 0 ) ; /* 見せる */
MG_mosDisp( 1 ) ;
MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
MMI_SendMessage( plyDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( plyDialogId, MM_DETACH, 0 ) ;
if( plyFlag == TRUE )
{
if( sizememo == plyMul )
{
v02_wide_head_read_and_dsp(v02Path, &frame, &x, &y, &wt, 1,
TL_malloc, TL_free ) ;
/* ファイル名,フレーム数,xd,yd,wait */
goto ply01 ;
}
else
{
r_waku_del(); /* 枠閉め */
v02_wide_head_read_and_dsp(v02Path, &frame, &x, &y, &wt, 1,
TL_malloc, TL_free ) ;
/* ファイル名,フレーム数,xd,yd,wait */
v02_graph_init( plyMul+1, x, y ) ;
/* 倍率にあわせて画面設定 */
goto ply00 ;
}
}
}
}
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
if( ret )
errorCheck( ret ) ;
return NOERR ;
}
/* V02→V02再圧縮ダイアログ表示 */
int selectFunc9(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int i, ret ;
char path[100] ;
char *ExtStr0[] = { "*.V02", NULL } ;
char *ExtStr1[] = { "*.V02", NULL } ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
ret= fileSelecter(v02Path2, ExtStr0, "VO2ファイル", "選 択", "取 消");
if( ret )
{
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
else
{
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v02Path2, ".V02" ) ;
for( i=0 ; i<80 ; i++ )
v02Path2[i] = path[i] ;
}
MMI_SendMessage( pacMesId[0], MM_SETMSG, 1, "再 圧 縮" ) ;
MTL_resetAtrObj( pacFilterBar, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( pacSoftBar, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( pacFilterNumId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( pacSoftNumId, (~MS_DSPONLYL40) ) ;
MTL_setAtrObj( pacMesId[1], MS_DSPONLYL40 ) ;
MTL_setAtrObj( pacMesId[2], MS_DSPONLYL40 ) ;
if( ret == NOERR )
{
int frame, x, y, wt ;
r_waku_del() ; /* 枠を閉める */
ret = v02_wide_head_read_and_dsp( v02Path2, &frame, &x, &y, &wt, 1,
TL_malloc, TL_free ) ;
if( ret == NOERR )
{
v02_graph_init( 2, x, y ) ; /* 倍率にあわせて画面設定 */
v_waku_clear( x, y, 2 ) ; /* 枠抜き */
ret = fileSelecter( v02Path, ExtStr1,
"VO2ファイル名", "選 択", "取 消" );
if( ret )
{ /* 中止する */
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( path, v02Path, ".V02" ) ;
for( i=0 ; i<80 ; i++ )
v02Path[i] = path[i] ;
}
else goto v10 ;
if( _strcmpi( v02Path2, v02Path ) == 0 )
{
ret = 52 ;
goto v10 ; /* file name 重複 */
}
MMI_SendMessage( pacDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( pacDialogId, MM_SHOW, 0 ) ; /* 見せる */
MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
MMI_SendMessage( pacDialogId, MM_ERASE, 0 ) ; /* 消す */
MMI_SendMessage( pacDialogId, MM_DETACH, 0 ) ;
if( pacFlag == TRUE )
{
MMI_SendMessage( pacWaitNumId[0], MM_SETNUMBOX, 5,
frame, 0, frame, 1, 0 ) ; /* 原画フレーム数設定 */
/* var, min, max, delta, ptColumn */
MMI_SendMessage( pacWaitNumId[1], MM_SETNUMBOX, 5,
0, 0, frame, 1, 0 ) ; /* 圧縮フレーム数設定 */
/* var, min, max, delta, ptColumn */
MMI_SendMessage( pacWaitDialogId, MM_ATTACH,
1, MMI_GetBaseObj() ) ;
MMI_SendMessage( pacWaitDialogId, MM_SHOW, 0 ) ; /* 見せる */
SetMouse16( 81, 0xf, 0x8 ) ; /* マウスカーソルをウエイト表示 */
if( v02TableFlag )
ret = v02_to_v02_t( v02Path2, v02Path,
pacFilter, pacSoft, 6, 0, v02Table ) ;
else
ret = v02_to_v02( v02Path2, v02Path,
pacFilter, pacSoft, 6, 0 ) ;
SetMouse16( 80, 0xf, 0x8 ) ; /* マウスカーソルを元に */
MMI_SendMessage( pacWaitDialogId, MM_ERASE, 0 ) ; /* 消す */
MMI_SendMessage( pacWaitDialogId, MM_DETACH, 0 ) ;
}
}
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
/* メニューとボタンを使えるように戻す */
v10:
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
if( ret )
errorCheck( ret ) ;
return NOERR ;
}
/* V00編集ダイアログ表示 */
int editFunc0(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int ret ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
r_waku_del() ; /* 枠を閉める */
MMI_SendMessage( editMsgId[0], MM_SETMSG, 1, "VOO 編 集" ) ;
editType = V00TYPE ;
editDialogSet( 0, 1 ) ;
editDialogSet( 1, 1 ) ;
editDialogSet( 2, 1 ) ;
MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ; /* 見せる */
ed01: MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
if( editFlag == TRUE )
{
MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
MMI_SendMessage( editWaitDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( editWaitDialogId, MM_SHOW, 0 ) ;
ret = v00_merge( v00EditPath[2],
v00EditPath[0], v00EditNum[0][1], v00EditNum[0][2],
v00EditPath[1], v00EditNum[1][1], v00EditNum[1][2] );
MMI_SendMessage( editWaitDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( editWaitDialogId, MM_DETACH, 0 ) ;
MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ; /* 見せる */
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
if( ret > 1 ) /* 1以下のerrorは見逃す */
errorCheck( ret ) ;
goto ed01 ;
}
MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
/* MVB編集ダイアログ表示 */
int editFunc1(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int ret ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
r_waku_del() ; /* 枠を閉める */
MMI_SendMessage( editMsgId[0], MM_SETMSG, 1, "MVB 編 集" ) ;
editType = MVBTYPE ;
editDialogSet( 0, 1 ) ;
editDialogSet( 1, 1 ) ;
editDialogSet( 2, 1 ) ;
MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ; /* 見せる */
ed01: MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
if( editFlag == TRUE )
{
MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
MMI_SendMessage( editWaitDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( editWaitDialogId, MM_SHOW, 0 ) ;
ret = mvb_merge( mvbEditPath[2],
mvbEditPath[0], mvbEditNum[0][1], mvbEditNum[0][2],
mvbEditPath[1], mvbEditNum[1][1], mvbEditNum[1][2] );
MMI_SendMessage( editWaitDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( editWaitDialogId, MM_DETACH, 0 ) ;
MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ; /* 見せる */
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
if( ret > 1 ) /* 1以下のerrorは見逃す */
errorCheck( ret ) ;
goto ed01 ;
}
MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
/* V02編集ダイアログ表示 */
int editFunc2(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int ret ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
r_waku_del() ; /* 枠を閉める */
MMI_SendMessage( editMsgId[0], MM_SETMSG, 1, "VO2 編 集" ) ;
editType = V02TYPE ;
editDialogSet( 0, 1 ) ;
editDialogSet( 1, 1 ) ;
editDialogSet( 2, 1 ) ;
MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ; /* 見せる */
ed01: MMI_ExecSystem() ; /* Dialog表示へ・・・イベントループ */
if( editFlag == TRUE )
{
MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
MMI_SendMessage( editWaitDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( editWaitDialogId, MM_SHOW, 0 ) ;
ret = v02_merge( v02EditPath[2],
v02EditPath[0], v02EditNum[0][1], v02EditNum[0][2],
v02EditPath[1], v02EditNum[1][1], v02EditNum[1][2] );
MMI_SendMessage( editWaitDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( editWaitDialogId, MM_DETACH, 0 ) ;
MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ; /* 見せる */
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
if( ret > 1 ) /* 1以下のerrorは見逃す */
errorCheck( ret ) ;
goto ed01 ;
}
MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
/* ビデオチェック */
/* initDataIVDDSK:editMItemId[3]:MJ_MITEML40の呼び出し関数 */
int editFunc3(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int ret ;
/* メニューとボタンを使えないようにする */
MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
r_waku_del() ; /* 枠を閉める */
MG_mosDisp( 0 ) ;
ret = video_snd_check() ;
displayClearAndReset() ;
setPalette( guiEgbPtr ) ;
diplayRecov() ;
MG_mosDisp( 1 ) ;
MMI_FlushEvnt() ; /* イベントをフラッシュ */
/* マウスが押されていれば次のイベントを無視 */
if( mouseSwCheck() )TL_setInvalidMosFlag() ;
if( ret )
errorCheck( ret ) ;
/* メニューとボタンを使えるように戻す */
MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
return NOERR ;
}
/*
ここからは 汎用サブルーチン
*/
/* 画面を消して、画面モードを標準状態(& writePage=0)にして、表示する */
int displayClearAndReset()
{
EGB_displayPage(guiEgbPtr,0,0);
EGB_resolution(guiEgbPtr,0,3); /* モード3,10合成 */
EGB_resolution(guiEgbPtr,1,10);
EGB_writePage(guiEgbPtr,0); /* mode3に書き込み */
EGB_paintMode(guiEgbPtr,0x22);
EGB_writeMode(guiEgbPtr,0);
EGB_displayPage(guiEgbPtr,0,3);
return 0;
}
/* 画面復帰 */
int diplayRecov()
{
WINCTRL *pctrl ; /* 画面復帰 */
WINCLIP *pwclp ;
EGB_displayPage(guiEgbPtr,0,0);
MMI_GetControl( &pctrl ) ;
pwclp = WIN_getClipMemory( &pctrl->bound, NULL ) ;
MMI_SendMessage( MMI_GetBaseObj(), MM_UPDATE, 1, pwclp ) ;
WIN_freeClipMemory( pwclp ) ;
setPalette( guiEgbPtr ) ;
EGB_displayPage(guiEgbPtr,0,3);
return NOERR ;
}
/* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
file_kakuchousi_set( fullname, name, kakuchou )
char fullname[], name[], kakuchou[];
{
int i;
for( i=0 ; i<76 ; i++ ){
fullname[i] = name[i];
if( name[i] == '.' || name[i] == (char)0 )goto mov01;
}
return 55; /* bad file name */
mov01: if( i == 0 )return 55;
if( name[i-1] == '\\' )return 55;
DWORD( fullname + i ) = DWORD( kakuchou );
fullname[i+4] = (char)0;
return 0;
}
/* マウス */
mouse(mmd)
int mmd;
{
static int s, x, y;
do{
MOS_rdpos(&s,&x,&y);
}while( s == 0 );
if( mmd == 0 ){
do{
MOS_rdpos(&s,&x,&y);
}while( s );
}
return 0;
}
/* マウスボタンチェック */
mouseSwCheck()
{
int sw ;
int x, y ;
MOS_rdpos( &sw, &x, &y ) ;
return sw ;
}
/* 圧縮中に途中経過(圧縮済フレーム数)を表示するルーチン */
v_cmp_frame_dsp( frame )
int frame ;
{
MMI_SendMessage( pacWaitNumId[1], MM_SETNUMBOX, 5,
frame+1, 0, frame+1, 1, 0 ) ; /* 原画フレーム数設定 */
/* var, min, max, delta, ptColumn */
MMI_SendMessage( pacWaitNumId[1], MM_SHOW, 0 ) ; /* 見せる */
return 0 ;
}
/* 制限つき枠くり抜き */
v_waku_clear( xd, yd, zoom )
int xd, yd, zoom ;
{
HYPER hyp ;
int x0, y0, x1, y1 ;
/* 続けて呼ばれてもいいように一端DETACHする */
MMI_SendMessage( wakuDialogId, MM_DETACH, 0 ) ;
MMI_SendMessage( wakuDialogId, MM_ATTACH, 1, baseDialogId ) ;
MMI_SendMessage( wakuDialogId, MM_GETHYPER, 1, &hyp ) ;
x0 = (640/zoom - xd) / 2 * zoom ;
y0 = (480/zoom - yd) / 2 * zoom ;
x1 = x0 + xd*zoom - 1 ;
y1 = y0 + yd*zoom - 1 ;
if( x0 < 0 )x0 = 0 ;
if( y0 < 20 )y0 = 20 ;
if( x1 > 639 )x1 = 639 ;
if( y1 > 479 )y1 = 479 ;
hyp.fr.lupx = x0 ;
hyp.fr.lupy = y0 ;
hyp.fr.rdwx = x1 ;
hyp.fr.rdwy = y1 ;
hyp.clr.fr = 0 ;
hyp.clr.back = 0 ;
hyp.clr.ch = 0 ;
hyp.atrm = 0 ;
MMI_SendMessage( wakuDialogId, MM_SETHYPER, 1, &hyp ) ;
MTL_setAtrObj( wakuDialogId, MS_DSPONLYL40 ) ;
MMI_SendMessage( wakuDialogId, MM_SHOW, 0 ) ;
return 0 ;
}
r_waku_del()
{
MMI_SendMessage( wakuDialogId, MM_ERASE, 0 ) ;
MMI_SendMessage( wakuDialogId, MM_DETACH, 0 ) ;
return NOERR ;
}
/* ファイル選択 */
int fileSelecter( path, ExtStr, title, exec, cncl )
char *path ;
char **ExtStr ;
char *title ;
char *exec ;
char *cncl ;
{
char pathName[100], name[20] ;
int i, j, n ;
unsigned int MSlctCnt ;
int Atr, ret, ret2 ;
int alertobj ; /* 現在のALERTOBJを退避する変数 */
ret2 = NOERR ;
n = 0 ;
for( i=0 ; i<79 ; i++ )
{
pathName[i] = path[i] ;
if( path[i] == '\\' )
n++ ;
if( path[i] == '\0' )
break ;
}
if( n <= 1 )
{
for( i=i ; i>=0 ; i-- )
{
if( path[i] == '\\' )
{
i++ ;
pathName[i] = '\0' ;
break ;
}
}
for( j=0 ; j<13 ; j++ )
{
name[j] = path[i+j] ;
}
}
else
{
for( i=i ; i>=0 ; i-- )
{
if( path[i] == '\\' )
{
pathName[i] = '\0' ;
break ;
}
}
for( j=0 ; j<13 ; j++ )
{
name[j] = path[i+1+j] ;
}
}
ret = FDG_SetFileText( name ) ;
ret = FDG_SetTitle( title, exec, cncl ) ;
alertobj = MMI_GetAlertObj() ; /* 現在のALERTOBJを退避 */
MMI_SetAlertObj( FDG_GetMainID() ) ;
ret = FDG_DspFileDlg(MMI_GetBaseObj(), FDG_FILEONLY | FDG_TEXT,
pathName, ExtStr, &MSlctCnt) ;
if( ret < 0 ) /* PATHが間違ってる場合はカレントディレクトリで */
{
name[0] = '\0' ;
ret = FDG_SetFileText( name ) ;
ret = FDG_DspFileDlg(MMI_GetBaseObj(), FDG_FILEONLY | FDG_TEXT,
NULL, ExtStr, &MSlctCnt) ;
}
MMI_SetAlertObj( alertobj ) ; /* ALERTOBJを元に戻す */
if( (ret == 1) && (MSlctCnt > 0) ) /* 正しくファイル名を収得したか? */
{
FDG_GetPathName( path, &Atr, 0 ) ;
}
else
{
ret2 = 1 ;
}
ret = FDG_RecovCurDir() ;
return ret2 ;
}
/* パレット設定 (パレットが設定されてなければgreen系に固定) */
int setPalette( char *ework )
{
char para[16*8+4] ;
int ptr, colnum ;
void set1Pal( int col, int b, int r, int g )
{
DWORD(para + ptr) = col ;
BYTE(para + ptr + 4) = b * 16 ;
BYTE(para + ptr + 5) = r * 16 ;
BYTE(para + ptr + 6) = g * 16 ;
BYTE(para + ptr + 7) = 0 ;
ptr += 8 ;
}
// EGB_getTmenuPalette( para ) ;
// colnum = DWORD(para) ;
colnum = 0 ; /* 強制的に色設定にしてしまう 1993 12 */
if( colnum == 6 ) ptr = 52 ;
else ptr = 4 ;
if( colnum != 16 )
{
set1Pal( 2, 4, 12, 6 ) ;
set1Pal( 3, 5, 5, 5 ) ; // set1Pal( 3, 10, 15, 12 ) ;
set1Pal( 4, 9, 9, 9 ) ;
set1Pal( 5, 7, 0, 12 ) ;
set1Pal( 10, 0, 13, 0 ) ;
set1Pal( 11, 10, 0, 0 ) ;
set1Pal( 12, 0, 0, 15 ) ;
set1Pal( 13, 15, 0, 15 ) ;
set1Pal( 14, 0, 15, 13 ) ;
if( colnum != 6 )
{ /* メニュー色(green系) */
set1Pal( 1, 4, 4, 8 ) ;
set1Pal( 6, 12, 12, 12 ) ;
set1Pal( 7, 7, 7, 7 ) ;
set1Pal( 8, 2, 2, 2 ) ;
set1Pal( 9, 8, 10, 12 ) ; /* file selector */
set1Pal( 15, 15, 15, 15 ) ;
}
DWORD(para + 0) = 15 ;
}
else
DWORD(para + 0) = colnum ;
EGB_palette( ework, 1, para ) ;
return NOERR ;
}
/* v02 table set */
int initV02Table( ac, av, k, name )
char ac,*av[];
char *name ;
int k ; /* 色の濃さ */
{
FILE *fp ;
char head[256] ;
char path[100] ;
int i, j, ret ;
char s ;
if( ac >= 2 )
{
for( j=1 ; j<ac ; j++ )
{
if( av[j][0] == '-' )
{
s = av[j][1] ;
if( s >= 0x61 && s <= 0x7a )s = s & 0xdf;
if( s == 'C' )
k = atoi( av[j] + 2 ) ;
}
}
}
if( k < 0 ) k = 0 ;
if( k > 12 ) k = 12 ;
/* v02tableの用意 */
ret = 0 ;
// if( ac < 1 )
// {
// v02TableFlag = 0; /* tableのpathの取得ができない */
// return NOERR ;
// }
if( (v02Table = (char *)TL_malloc( 32768 + 512 + 65536 + 4096 )) == NULL )
{
v02TableFlag = 0; /* out of memory */
return NOERR ;
}
else
v02TableFlag = -1;
file_kakuchousi_set( path, name, ".TAB" ) ;
if( ( fp = fopen( path, "rb" ) ) == NULL )
ret = 1 ;
else
{
if( fread( head, 256, 1, fp ) < 1 )
ret = 1 ;
else
{
if( DWORD( head ) != 0x42544456 ) /* 0x42544456 = VDTB */
ret = 1 ;
else
{
if( fread( v02Table, 32768 + 512 + 65536 + 4096, 1, fp ) < 1 )
ret = 1 ;
}
}
fclose(fp) ;
}
if( ret )
{
EGB_displayPage(guiEgbPtr,0,0);
EGB_resolution(guiEgbPtr,1,5); /* page1 mode5 */
EGB_writePage(guiEgbPtr,1);
EGB_displayStart(guiEgbPtr,1,0,0);
EGB_displayStart(guiEgbPtr,2,2,2);
EGB_displayStart(guiEgbPtr,3,256,192);
EGB_displayStart(guiEgbPtr,0,32,24);
EGB_writePage(guiEgbPtr,0);
setPalette( guiEgbPtr ) ;
MMI_SendMessage( tableSetDialogId, MM_ATTACH,
1, MMI_GetBaseObj() ) ;
MMI_SendMessage( tableSetDialogId, MM_SHOW, 0 ) ; /* 見せる */
MG_mosDisp( 0 ) ;
EGB_displayPage(guiEgbPtr,1,3);
direct_v02_table( k, v02Table ) ; /* 色の濃さはk */
if( ( fp = fopen( path, "wb" ) ) != NULL )
{
for( i=0 ; i<256 ; i += 4 )
DWORD( head + i ) = 0 ;
DWORD( head ) = 0x42544456 ;
DWORD( head+4 ) = k ;
fwrite( head, 256, 1, fp ) ;
fwrite( v02Table, 32768 + 512 + 65536 + 4096, 1, fp ) ;
fclose(fp) ;
}
displayClearAndReset() ;
setPalette( guiEgbPtr ) ;
MMI_SendMessage( tableSetDialogId, MM_ERASE, 0 ) ; /* 消す */
MMI_SendMessage( tableSetDialogId, MM_DETACH, 0 ) ;
MG_mosDisp( 1 ) ;
}
return NOERR ;
}
/* 2画面合成のためのマウス表示関数 */
int mouseDsp( int num )
{
SetMouse16( num, 0xf, 0x8 ) ; /* マウスカーソルが透けないように */
return NOERR ;
}
/* 起こされた時のセット */
int wakeSet()
{
r_waku_del() ;
/*
WINCTRL *pctrl ;
WINCLIP *pwclp ;
MMI_GetControl( &pctrl ) ;
pwclp = WIN_getClipMemory( &pctrl->bound, NULL ) ;
MMI_SendMessage( MMI_GetBaseObj(), MM_UPDATE, 1, pwclp ) ;
WIN_freeClipMemory( pwclp ) ;
setPalette( guiEgbPtr ) ;
*/
// EGB_writePage(guiEgbPtr,1);
// EGB_color(guiEgbPtr,1,0x8000);
// EGB_clearScreen(guiEgbPtr);
// EGB_writePage(guiEgbPtr,0);
return NOERR ;
}
/* スリープの前のセット */
int sleepSet()
{
// r_waku_del() ;
return NOERR ;
}
/* 終了処理 */
int quitFunc()
{
if( v02TableFlag )
TL_free( v02Table ) ;
EGB_displayPage( guiEgbPtr, 0, 0 );
EGB_writePage( guiEgbPtr, 1 );
EGB_color( guiEgbPtr, 1, 0 ) ;
EGB_clearScreen( guiEgbPtr ) ; /* ページをきれいにしよう */
EGB_writePage( guiEgbPtr, 0 );
EGB_color( guiEgbPtr, 1, 0 ) ;
EGB_clearScreen( guiEgbPtr ) ; /* ページをきれいにしよう */
MMI_SetHaltFlag( TRUE ) ;
return NOERR ;
}
/* 終了可能なら終了する処理 */
int quitFunc2()
{
/* menubarId が MS_DSPONLYL40 なら何かの作業中で終了不可 */
if( (MTL_checkAtrObj( menubarId, MS_DSPONLYL40 ) == 0) )
{
if( v02TableFlag )
TL_free( v02Table ) ;
EGB_writePage( guiEgbPtr, 1 );
EGB_color( guiEgbPtr, 1, 0 ) ;
EGB_clearScreen( guiEgbPtr ) ; /* ページをきれいにしよう */
EGB_writePage( guiEgbPtr, 0 );
EGB_color( guiEgbPtr, 1, 0 ) ;
EGB_clearScreen( guiEgbPtr ) ; /* ページをきれいにしよう */
MMI_SetHaltFlag( TRUE ) ;
return NOERR ;
}
return ILLEGAL_FUNCTION ;
}
/* あばうと表示 */
int aboutFunc()
{
MMI_SendMessage( alertId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( alertId, MM_SHOW, 0 ) ;
return NOERR ;
}
/* あばうと表示確認 */
int aboutOKFunc(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
MMI_SendMessage( alertId, MM_ERASE, 0 ) ;
MMI_SendMessage( alertId, MM_DETACH, 0 ) ;
return NOERR ;
}
/* error 表示ルーチン */
int errorCheck(number)
int number;
{
MG_mosDisp( 1 ) ;
MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
"エラーが発生しました。" ) ;
if( number == 4 )
MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
"データが見つかりません。" ) ;
if( number == 7 )
MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
"メモリが足りません。" ) ;
if( number == 52 )
MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
"ファイル名が重複しています。" ) ;
if( number == 54 )
MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
"フレームオーバーです。" ) ;
if( number == 55 )
MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
"ファイル名が正しくありません。" ) ;
if( number == 58 )
MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
"データ形式が正しくありません。" ) ;
if( number == 1 )
MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
"ロードできませんでした。" ) ;
if( number == 2 )
MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
"セーブできませんでした。" ) ;
if( number == 1000 )
MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
"データの形式がそろってません。" ) ;
MMI_SendMessage( errorId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
MMI_SendMessage( errorId, MM_SHOW, 0 ) ;
MMI_ExecSystem() ;
MMI_SendMessage( errorId, MM_ERASE, 0 ) ;
MMI_SendMessage( errorId, MM_DETACH, 0 ) ;
return NOERR;
}
/* エラー表示確認 */
int errorOKFunc(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
MMI_SetHaltFlag( TRUE ) ;
return NOERR ;
}